import 'dart:ffi';

import 'package:objectbox/objectbox.dart';

@Entity()
class PosOrder {
  @Id()
  int id;
  @Index()
  String orderNo;  // 订单号
  DateTime createDate;  // 创建时间
  DateTime writeDate;  // 修改时间
  String address;  // 地址(外卖情况)
  String tableName;  // 桌台
  String makeOrderUser;  // 下单人
  int makeOrderUserId;  // 下单人id
  String alipayNo;  // 支付宝支付id(用于退款用)
  String wechatPayNo;  // 微信支付id(用于退款用)
  String payOpenId;   // 微信小程序id
  double amountTotal;  // 订单总计
  double discountTotal;  // 订单优惠总计
  int memberId;  // 会员id
  String memberName;  //  会员名称
  String note;  // 备注

  PosOrder(orderNo,
    createDate,
    tableName,
    makeOrderUser,
    makeOrderUserId,
    amountTotal,
    {writeDate,
      address,
      alipayNo,
      wechatPayNo,
      payOpenId,
      discountTotal,
      memberId,
      memberName,
      note
    })
      : createDate = createDate?createDate:DateTime.now();

  @Backlink('orderLines')
  final orderLines = ToMany<OrderLines>();

  // final member = ToOne<Customer>();
}

@Entity()
class OrderLines {
  @Id()
  int id;
  String productName;  // 产品名称
  int productId;  // 产品id
  double priceUnit;  // 产品单价
  double qty;  // 产品数量
  double priceSubtotal;  // 小计
  double discount;  // 折扣
  String note;  // 备注
  String tastes;  // 口味
  String tempContext;  // 临时菜备注
  String tempUom; // 临时菜单位
  int comboId;  // 组合id
  String comboTimeStr;  // 组合菜时间戳

  OrderLines(
      productName,
      productId,
      priceUnit,
      qty,
      priceSubtotal,
      {discount=0,note,tastes,tempContext,tempUom,comboId,comboTimeStr});

  final posOrder = ToOne<PosOrder>();
}